#ifndef BPE_PHYSICAL_OBJECT_H
#define BPE_PHYSICAL_OBJECT_H


#include <Irrlicht.h>
using namespace irr;
using namespace core;
using namespace scene;
#include <boost/shared_ptr.hpp>

#include "../BPEMath/BPEVector3d.h"
#include "../BPEMath/BPEPoint3d.h"



#include <vector>
using namespace std;
using namespace boost;
class BPEPhysicalObject{

private:
	BPEVector3d bpeForce;
	
	vector<BPEVector3d> bpeRotationalForce;
	

	const vector3df *bpePosition;
	BPEVector3d bpeSpeed;
	BPEVector3d bpeRotationalSpeed;
	double mass;





public:
	BPEPhysicalObject();
	BPEPhysicalObject(const vector3df *position, const double &mass);



	double getMass();
	void setMass(const double &m);
	BPEPoint3d getPosition();


	void resetAllForces();


	void resetMovementForces();
	void addForce(const BPEVector3d &f);


	void resetRotationalForces();
	void addRotationalForce(const BPEVector3d &f);

	void calculateSpeed();
	void calculateRotationalSpeed();


	void setSpeed(const BPEVector3d &vec);
	void setRotationalSpeed(const BPEVector3d &vec);


};


#endif